package com.tiancheng.trade.payment.channel.enums;

import com.tiancheng.trade.commom.core.enums.BaseEnum;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;
import java.util.Optional;

/**
 * 银联商务消息类型
 * 支付场景：
 * 1 - app中支付
 * 2 - 微信小程序支付
 * 3 - 微信公众号支付
 * 4 - h5支付
 * 5 - web扫码支付
 */
@Getter
@AllArgsConstructor
public enum UmsMsgTypeEnum implements BaseEnum<String> {
    WX_UNIFIEDORDER("wx.unifiedOrder", "微信小程序支付（小程序、app中使用）"),
    WX_JSPAY("WXPay.jsPay", "微信公众号支付（微信公众号使用）"),
//    WX_APPPREORDER("wx.appPreOrder", "微信直连（app中使用，不可用）"),
//    WX_H5PAY("WXPay.h5Pay", "微信H5支付（h5使用，不可用）"),

    TRADE_APPPREORDER("trade.appPreOrder", "支付宝跳转小程序支付（app中使用）"),
    TRADE_H5PAY("trade.h5Pay", "支付宝H5支付（H5使用）"),
//    TRADE_PRECREATE("trade.precreate", "支付宝直连（app中使用，费率高，未使用）"),
//    TRADE_CREATE("trade.create", "支付宝小程序支付（支付宝小程序使用）"),
//    TRADE_JSPAY("trade.jsPay", "支付宝服务窗支付（服务窗使用）"),

//    QMF_H5PAY("qmf.h5Pay", "银联在线无卡支付（H5使用，未使用）"),
//    QMF_ORDER("qmf.order", "全民付（app中使用，未使用）"),

    UAC_APPORDER("uac.appOrder", "银联云闪付（app中使用）"),
    UAC_ORDER("uac.order", "银联云闪付（H5使用）"),
    UAC_MINIORDER("uac.miniOrder", "银联云闪付小程序"),
//    UAC_JSPAY("acp.jsPay", "银联云闪付（公众号+服务窗使用，未使用）"),

//    APPLEPAY_ORDER("applepay.order", "ApplePay（app中使用，未使用）"),

    SCAN("bills.getQRCode", "扫码支付（web使用）"),

// **************************** 以上为“银联下单”接口用到的消息类型 **************************** //

    QUERY("query", "下单查询"),
    REFUND("refund", "退款"),
    REFUND_QR("bills.refund", "扫码退款"),
    REFUND_QUERY("refundQuery", "退款查询"),
    CLOSE("close", "订单关闭"),
    CLOSE_SCAN("bills.closeQRCode", "扫码支付关闭"),


    ;
    private String code;
    private String desc;

    public static String getDesc(String code) {
        Optional<UmsMsgTypeEnum> typeEnum = Arrays.stream(UmsMsgTypeEnum.values()).filter(c -> c.code.equals(code)).findFirst();
        if (typeEnum.isPresent()) {
            return typeEnum.get().getDesc();
        }
        return "";
    }
}
